ВВЕРХ

SQL INSERT INTO SELECT

INSERT INTO SELECT Описание

Оператор SQL INSERT INTO SELECT копирует данные из одной таблицы и вставляет их в другую таблицу.

Оператор INSERT INTO SELECT требует, чтобы типы данных в исходной и целевой таблицах совпадали.


Существующие записи в целевой таблице не влияют.

INSERT INTO SELECT Синтаксис

Копирует все столбцы из одной таблицы в другую:

INSERT INTO table2
SELECT *
FROM table1
WHERE condition

Копирует только некоторые столбцы из одной таблицы в другую:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition

Демонстрационная база данных

В этом учебнике мы будем использовать известный пример базы данных Northwind.

Ниже приведена выборка из таблицы "Customers" (Клиенты):

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

И выборку из таблицы "Suppliers" (Поставщики):

SupplierIDSupplierNameContactNameAddressCityPostalCodeCountryPhone
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK(171) 555-2222
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA(100) 555-4822
3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA(313) 555-5735
4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan(03) 3555-5011
5Cooperativa de Quesos 'Las Cabras'Antonio del Valle SaavedraCalle del Rosal 4Oviedo33007Spain(98) 598 76 54

INSERT INTO SELECT Примеры

Следующий оператор SQL копирует "Suppliers" (Поставщики) в "Customers" (Клиенты) (столбцы, не заполненные данными, будут содержать NULL):

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers

Следующий оператор SQL копирует «Поставщики» в «Клиенты» (заполняет все столбцы):

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country
FROM Suppliers

Следующий оператор SQL копирует только немецких поставщиков в "Клиенты":

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers
WHERE Country = 'Германия'